From 0ba1aad4e3d16e2ffa3dd9ab73c27f19785b66c8 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 9 May 2020 15:19:39 -0400 Subject: [PATCH] filechooserdialog: Fix disposing We need to drop our widgetry in dispose to prevent leakage. --- gtk/gtkfilechooserdialog.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/gtk/gtkfilechooserdialog.c b/gtk/gtkfilechooserdialog.c index 4f5e9f6ca4..c2da28e442 100644 --- a/gtk/gtkfilechooserdialog.c +++ b/gtk/gtkfilechooserdialog.c @@ -221,6 +221,7 @@ struct _GtkFileChooserDialogPrivate gboolean has_entry; }; +static void gtk_file_chooser_dialog_dispose (GObject *object); static void gtk_file_chooser_dialog_set_property (GObject *object, guint prop_id, const GValue *value, @@ -262,6 +263,7 @@ gtk_file_chooser_dialog_class_init (GtkFileChooserDialogClass *class) GObjectClass *gobject_class = G_OBJECT_CLASS (class); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); + gobject_class->dispose = gtk_file_chooser_dialog_dispose; gobject_class->set_property = gtk_file_chooser_dialog_set_property; gobject_class->get_property = gtk_file_chooser_dialog_get_property; gobject_class->notify = gtk_file_chooser_dialog_notify; @@ -387,6 +389,16 @@ file_chooser_widget_response_requested (GtkWidget *widget, priv->response_requested = FALSE; } +static void +gtk_file_chooser_dialog_dispose (GObject *object) +{ + GtkFileChooserDialogPrivate *priv = gtk_file_chooser_dialog_get_instance_private (GTK_FILE_CHOOSER_DIALOG (object)); + + g_clear_pointer ((GtkWidget **)&priv->widget, gtk_widget_unparent); + + G_OBJECT_CLASS (gtk_file_chooser_dialog_parent_class)->dispose (object); +} + static void gtk_file_chooser_dialog_set_property (GObject *object, guint prop_id, -- 2.30.2